/**
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2007，所有权利保留。
 * 
 * 项目名：	rumba
 * 文件名：	Subscriber.java
 * 模块说明：	
 * 修改历史：
 * Oct 30, 2007 - lxm - 创建。
 */
package com.hd123.rumba.mscb.subscriber;

import java.io.Serializable;

import com.hd123.rumba.exception.StringTooLongException;
import com.hd123.rumba.util.ObjectUtil;

/**
 * 订阅者 | 实体.服务类 | 接口类
 * 
 * @author lxm
 * 
 */
public class Subscriber implements Serializable {

  private String type_;
  private String mgrClassName;
  private String id;

  public Subscriber clone() {
    Subscriber c = new Subscriber();
    c.type_ = this.type_;
    c.mgrClassName = this.mgrClassName;
    c.id = this.id;
    return c;
  }

  public boolean equals(Object obj) {
    if (obj == null)
      return false;
    if (!(obj instanceof Subscriber))
      return false;
    Subscriber sub = (Subscriber) obj;
    
    return ObjectUtil.equals(this.type_, sub.getType_())
      && ObjectUtil.equals(this.mgrClassName, sub.getMgrClassName())
      && ObjectUtil.equals(this.id, sub.getId());
  }
  
  public int hashCode() {
    int hc = 13;
    hc = hc * 31 + (this.type_ == null ? 0 : this.type_.hashCode());
    hc = hc * 31 + (this.mgrClassName == null ? 0 : this.mgrClassName.hashCode());
    hc = hc * 31 + (this.id == null ? 0 : this.id.hashCode());
    return hc;
  }

  /** 标识 */
  public String getId() {
    return id;
  }

  /** 标识 */
  public void setId(String id) throws StringTooLongException {
    if (id != null)
      id = CSubscriber.truncate(id, CSubscriber.LENGTH_ID, "id", CSubscriber.CAPTION_ID);
    this.id = id;
  }

  /** 对应的管理员对象类名 */
  public String getMgrClassName() {
    return mgrClassName;
  }

  /** 对应的管理员对象类名 */
  public void setMgrClassName(String mgrClassName) {
    this.mgrClassName = mgrClassName;
  }

  /** 类型，取值参见名为CSubscriber.VALUE_TYPE_*的常量。 */
  public String getType_() {
    return type_;
  }

  /** 类型，取值参见名为CSubscriber.VALUE_TYPE_*的常量。 */
  public void setType_(String type) throws StringTooLongException {
    if (type != null)
      type = CSubscriber.truncate(type, CSubscriber.LENGTH_TYPE, "type", CSubscriber.CAPTION_TYPE);
    this.type_ = type;
  }
}
